package parseo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;

public class Parseo {

	ArrayList listaverbos = null;
	ArrayList listasustantivos = null;
	ArrayList listaverbosextraidos = null;

	public Parseo() {
		this.listasustantivos = new ArrayList();
		this.listaverbosextraidos = new ArrayList();
	}

	public boolean esVerbo(String palabra) {
		Iterator ite = this.listaverbos.iterator();
		String verbo;
		String recorte;
		Boolean verboo = false;
		while (ite.hasNext() && verboo == false) {
			verbo = (String) ite.next();
			if (palabra.toUpperCase().contains(verbo.toUpperCase())) {
				if (!palabra.equalsIgnoreCase(verbo)) {
					int x = verbo.length();
					recorte = palabra.substring(x, palabra.length());
					//System.out.println("recorte= " + recorte);
					if (recorte != null && recorte.equalsIgnoreCase("o")
							|| recorte.equalsIgnoreCase("o")
							|| recorte.equalsIgnoreCase("a")
							|| recorte.equalsIgnoreCase("e")
							|| recorte.equalsIgnoreCase("aba")
							|| recorte.equalsIgnoreCase("uvo")
							|| recorte.equalsIgnoreCase("oy")) {
						verboo = true;
					}
				} else
					verboo = true;
			}

		}
		return verboo;
	}

	public void cargarverbos() {
		listaverbos = new ArrayList();
		File archivo = null;
		FileReader fr = null;
		BufferedReader br = null;

		try {
			// Apertura del fichero y creacion de BufferedReader para poder
			// hacer una lectura comoda (disponer del metodo readLine()).
			String url = "verbos.txt";
			//System.out.println(url);

			archivo = new File(url);
			fr = new FileReader(archivo);
			br = new BufferedReader(fr);

			// Lectura del fichero
			String linea;
			String[] arrayverbos;

			while ((linea = br.readLine()) != null) {
				//System.out.println(linea);

				arrayverbos = linea.split(";");

				// En este momento tenemos un array en el que cada elemento es
				// un color.
				for (int i = 0; i < arrayverbos.length; i++) {
					//System.out.println(i + arrayverbos[i]);
					if (arrayverbos[i] != null)
						this.listaverbos.add(arrayverbos[i]);
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// En el finally cerramos el fichero, para asegurarnos
			// que se cierra tanto si todo va bien como si salta
			// una excepcion.
			try {
				if (null != fr) {
					fr.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

	}

	public static void main(String[] args) {

		Parseo par = new Parseo();
		par.cargarverbos();

		File archivo = null;
		FileReader fr = null;
		BufferedReader br = null;
		
		File log = null;
		BufferedWriter logWr = null;

		try {
			log = new File(args[2]);
			logWr = new BufferedWriter(new FileWriter(log));
			
			// Apertura del fichero y creacion de BufferedReader para poder
			// hacer una lectura comoda (disponer del metodo readLine()).

			String url = "texto.txt";
			if(args.length >= 2) url = args[0];
			logWr.write(url + "\n");

			archivo = new File(url);
			fr = new FileReader(archivo);
			br = new BufferedReader(fr);

			// Lectura del fichero
			String linea;
			String[] arraypalabras;

			while ((linea = br.readLine()) != null) {
				//System.out.println(linea);

				arraypalabras = linea.split("\\ ");
				String pal;

				// En este momento tenemos un array en el que cada elemento es
				// un color.
				for (int i = 0; i < arraypalabras.length; i++) {
					pal = arraypalabras[i];
					//System.out.println(pal);
					if (pal != null) {
						if (par.esVerbo(pal))
							par.listaverbosextraidos.add(pal);
						else
							par.listasustantivos.add(pal);
					}

				}

			}

			/* impresion listas */

//			System.out.println("Lista de Verbos Diccionario:");
//			Iterator it = par.listaverbos.iterator();
//
//			while (it.hasNext()) {
//				System.out.println(it.next());
//			}

			logWr.write("Lista de Sustantivos:\n");
			Iterator ite1 = par.listasustantivos.iterator();

			while (ite1.hasNext()) {
				logWr.write(ite1.next().toString() + "\n");
			}

			logWr.write("Lista de Verbos:\n");
			Iterator ite2 = par.listaverbosextraidos.iterator();

			while (ite2.hasNext()) {
				logWr.write(ite2.next().toString() + "\n");
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// En el finally cerramos el fichero, para asegurarnos
			// que se cierra tanto si todo va bien como si salta
			// una excepcion.
			try {
				if (null != fr) {
					fr.close();
				}
				if (null != logWr){
					logWr.flush();
					logWr.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}
}
